home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / umich / utils / maxidi22.lzh / TOS / URAN_GEM.S < prev    next >
Encoding:
Text File  |  1992-02-07  |  10.2 KB  |  610 lines

  1. ; File name:    URAn_GEM.S    Revised:    1992.02.07
  2. ; Creator:    U.R.Andersson    Created:    1991.02.02
  3. ; (c)1991 by:    U.R.Andersson    All rights reserved
  4. ; Released as:    PD FREEWARE    (NB: commercial sales forbidden!)
  5. ;
  6. ;
  7. ;    VDI FUNCTION DEFINITIONS
  8. ;
  9. v_opnwk        = $000B7f01
  10. v_clswk        = $00007f02
  11. v_clrwk        = $00007f03
  12. v_updwk        = $00007f04
  13. ;Op $05 has subop's given below
  14. v_pline        = $ff007f06
  15. v_pmarker    = $ff007f07
  16. v_gtext        = $00ff7f08
  17. v_fillarea    = $ff007f09
  18. v_cellarray    = $02ff7f0a
  19. ;Op $0b has subop's given below
  20. vst_height    = $01007f0c
  21. vst_rotation    = $00017f0d
  22. vs_color    = $00047f0e
  23. vsl_type    = $00017f0f
  24. vsl_width    = $01007f10
  25. vsl_color    = $00017f11
  26. vsm_type    = $00017f12
  27. vsm_height    = $01007f13
  28. vsm_color    = $00017f14
  29. vst_font    = $00017f15
  30. vst_color    = $00017f16
  31. vsf_interior    = $00017f17
  32. vsf_style    = $00017f18
  33. vsf_color    = $00017f19
  34. vq_color    = $00027f1a
  35. ;$1b
  36. vrq_locator    = $01007f1c
  37. vsm_locator    = vrq_locator
  38. vrq_valuator    = $00017f1d
  39. vsm_valuator    = vrq_valuator
  40. vrq_choice    = $00017f1e
  41. vsm_choice    = vrq_choice
  42. vrq_string    = $01027f1f
  43. vsm_string    = vrq_string
  44. vswr_mode    = $00017f20
  45. vsin_mode    = $00027f21
  46. ;$22
  47. vql_attributes    = $00007f23
  48. vqm_attributes    = $00007f24
  49. vqf_attributes    = $00007f25
  50. vqt_attributes    = $00007f26
  51. vst_alignment    = $00027f27
  52. v_opnvwk    = $000b7f64
  53. v_clsvwk    = $00007f65
  54. vq_extnd    = $00017f66
  55. v_contour    = $01017f67
  56. v_contourfill    = v_contour
  57. vsf_perimeter    = $00017f68
  58. v_get_pixel    = $01007f69
  59. vst_effects    = $00017f6a
  60. vst_point    = $00017f6b
  61. vsl_ends    = $00027f6c
  62. vro_cpyfm    = $04037f6d
  63. vr_trnfm    = $00007f6e
  64. vsc_form    = $00257f6f
  65. vsf_udpat    = $00ff7f70
  66. vsl_udsty    = $00017f71
  67. vr_recfl    = $02007f72
  68. vqin_mode    = $00017f73
  69. vqt_extent    = $00ff7f74
  70. vqt_width    = $00017f75
  71. vex_timv    = $00007f76
  72. vex_time    = vex_timv
  73. vst_load_fonts    = $00017f77
  74. vst_unload_fonts= $00017f78
  75. vrt_cpyfm    = $04017f79
  76. v_show_c    = $00017f7a
  77. v_hide_c    = $00007f7b
  78. vq_mouse    = $00007f7c
  79. vex_butv    = $00007f7d
  80. vex_motv    = $00007f7e
  81. vex_curv    = $00007f7f
  82. vq_key_s    = $00007f80
  83. vs_clip        = $02017f81
  84. ;;;vqt_name    = $xxxx7f82
  85. ;;;vqt_fontinfo    = $xxxx7f83
  86. ;
  87. ;
  88. ; VDI subfunction definitions
  89. ;
  90. vq_chcells    = $00000105
  91. v_exit_cur    = $00000205
  92. v_enter_cur    = $00000305
  93. v_curup        = $00000405
  94. v_curdown    = $00000505
  95. v_curright    = $00000605
  96. v_curleft    = $00000705
  97. v_curhome    = $00000805
  98. v_eeol        = $00000905
  99. v_eeos        = $00000a05
  100. vs_curaddress    = $00020b05
  101. v_curtext    = $00ff0c05
  102. v_rvon        = $00000d05
  103. v_rvoff        = $00000e05
  104. vq_curaddress    = $00000f05
  105. vq_tabstatus    = $00001005
  106. v_hardcopy    = $00001105
  107. v_dspcur    = $01001205
  108. v_rmcur        = $00001305
  109. v_form_adv    = $00001405
  110. v_output_window    = $02001505
  111. v_clear_disp_list=$00001605
  112. ;;;v_bit_image    = $xxxx1705
  113. ;
  114. vs_palette    = $00013c05
  115. ;
  116. vqp_films    = $00005b05
  117. vqp_state    = $00005c05
  118. vsp_state    = $00155d05
  119. vsp_save    = $00005e05
  120. vsp_message    = $00009500
  121. vqp_error    = $00006005
  122. v_meta_extents    = $02006205
  123. ;;;v_write_meta    = $xxxx6305
  124. vm_filename    = $00ff6405
  125. ;
  126. v_bar        = $0200010b
  127. v_arc        = $0402020b
  128. v_pieslice    = $0402030b
  129. v_circle    = $0300040b
  130. v_ellipse    = $0200050b
  131. v_ellarc    = $0202060b
  132. v_ellpie    = $0202070b
  133. v_rbox        = $0200080b
  134. v_rfbox        = $0200090b
  135. v_justified    = $02ff0a0b
  136. ;
  137. ;
  138. ; AES FUNCTION DEFINITIONS
  139. ;
  140. appl_init    = $01000a
  141. appl_read    = $21100b
  142. appl_write    = $21100c
  143. appl_find    = $01100d
  144. appl_tplay    = $21100e
  145. appl_trecord    = $11100f
  146. appl_exit    = $010013
  147. ;
  148. evnt_keybd    = $010014
  149. evnt_button    = $350015
  150. evnt_mouse    = $550016
  151. evnt_mesag    = $011017
  152. evnt_timer    = $210018
  153. evnt_multi    =$1071019
  154. evnt_dclick    = $21001a
  155. ;
  156. menu_bar    = $11101e
  157. menu_icheck    = $21101f
  158. menu_ienable    = $211020
  159. menu_tnormal    = $211021
  160. menu_text    = $112022
  161. menu_register    = $111023
  162. ;
  163. objc_add    = $211028
  164. objc_delete    = $111029
  165. objc_draw    = $61102a
  166. objc_find    = $41102b
  167. objc_offset    = $13102c
  168. objc_order    = $21102d
  169. objc_edit    = $42102e
  170. objc_change    = $81102f
  171. ;
  172. form_do        = $111032
  173. form_dial    = $911033
  174. form_alert    = $111034
  175. form_error    = $110035
  176. form_center    = $051036
  177. ;;;form_button
  178. ;;;form_keybd
  179. ;
  180. graf_rubberbox    = $430046
  181. graf_dragbox    = $830047
  182. graf_movebox    = $610048
  183. graf_mbox    = $610048
  184. graf_growbox    = $810049
  185. graf_shrinkbox    = $81004a
  186. graf_watchbox    = $41104b
  187. graf_slidebox    = $31104c
  188. graf_handle    = $05004d
  189. graf_mouse    = $11104e
  190. graf_mkstate    = $05004f
  191. ;
  192. scrp_read    = $011050
  193. scrp_write    = $011051
  194. ;
  195. fsel_input    = $02205a
  196. fsel_exinput    = $02305b
  197. ;
  198. wind_create    = $510064
  199. wind_open    = $510065
  200. wind_close    = $110066
  201. wind_delete    = $110067
  202. wind_get    = $250068
  203. wind_set    = $610069
  204. wind_find    = $21006a
  205. wind_update    = $11006b
  206. wind_calc    = $65006c
  207. wind_new    = $00006d
  208. ;
  209. rsrc_load    = $01106e
  210. rsrc_free    = $01006f
  211. rsrc_gaddr    = $210170
  212. rsrc_saddr    = $211071
  213. rsrc_obfix    = $111072
  214. ;
  215. shel_read    = $012078
  216. shel_write    = $312079
  217. shel_get    = $11107a
  218. shel_put    = $11107b
  219. shel_find    = $01107c
  220. shel_envrn    = $01207d
  221. ;
  222. ;
  223. ; AES DATA DEFINITIONS
  224. ;
  225. ; Function flags for evnt_multi
  226. ;
  227. MU_KEYBD    = $01
  228. MU_BUTTON    = $02
  229. MU_M1        = $04
  230. MU_M2        = $08
  231. MU_MESAG    = $10
  232. MU_TIMER    = $20
  233. ;
  234. ;
  235. ; Message event codes
  236. ;
  237. MN_SELECTED    = $10
  238. WM_REDRAW    = $14
  239. WM_TOPPED    = $15
  240. WM_CLOSED    = $16
  241. WM_FULLED    = $17
  242. WM_ARROWED    = $18
  243. WM_HSLID    = $19
  244. WM_VSLID    = $1A
  245. WM_SIZED    = $1B
  246. WM_MOVED    = $1C
  247. WM_NEWTOP    = $1D
  248. AC_OPEN        = $28
  249. AC_CLOSE    = $29
  250. ;
  251. ;
  252. ; Function codes for form_dial
  253. ;
  254. FMD_START    = 0
  255. FMD_GROW    = 1
  256. FMD_SHRINK    = 2
  257. FMD_FINISH    = 3
  258. ;
  259. ;
  260. ; Object type codes
  261. ;
  262. G_BOX        = $14
  263. G_TEXT        = $15
  264. G_BOXTEXT    = $16
  265. G_IMAGE        = $17
  266. G_PROGDEF    = $18
  267. G_IBOX        = $19
  268. G_BUTTON    = $1A
  269. G_BOXCHAR    = $1B
  270. G_STRING    = $1C
  271. G_FTEXT        = $1D
  272. G_FBOXTEXT    = $1E
  273. G_ICON        = $1F
  274. G_TITLE        = $20
  275. ;
  276. ;
  277. ; Object flags
  278. ;
  279. NONE        = $00
  280. SELECTABLE    = $01
  281. DEFAULT        = $02
  282. EXIT        = $04
  283. EDITABLE    = $08
  284. RBUTTON        = $10
  285. LASTOB        = $20
  286. TOUCHEXIT    = $40
  287. HIDETREE    = $80
  288. INDIRECT    = $100
  289. ;
  290. ;
  291. ; Object states
  292. ;
  293. NORMAL        = $00
  294. SELECTED    = $01
  295. CROSSED        = $02
  296. CHECKED        = $04
  297. DISABLED    = $08
  298. OUTLINED    = $10
  299. SHADOWED    = $20
  300. ;
  301. ;
  302. ; Function codes for wind_set/wind_get
  303. ;
  304. WF_KIND        = $01
  305. WF_NAME        = $02
  306. WF_INFO        = $03
  307. WF_WORKXYWH    = $04
  308. WF_CURRXYWH    = $05
  309. WF_PREVXYWH    = $06
  310. WF_FULLXYWH    = $07
  311. WF_HSLIDE    = $08
  312. WF_VSLIDE    = $09
  313. WF_TOP        = $0A
  314. WF_FIRSTXYWH    = $0B
  315. WF_NEXTXYWH    = $0C
  316. WF_RESVD    = $0D
  317. WF_NEWDESK    = $0E
  318. WF_HSLSIZE    = $0F
  319. WF_VSLSIZE    = $10
  320. WF_SCREEN    = $11
  321. ;
  322. ;
  323. ; Shape codes for graf_mouse
  324. ;
  325. ARROW        = $00
  326. TEXT_CRSR    = $01
  327. HOURGLASS    = $02
  328. BEE        = $02
  329. POINT_HAND    = $03
  330. FLAT_HAND    = $04
  331. THIN_CROSS    = $05
  332. THICK_CROSS    = $06
  333. OUTLN_CROSS    = $07
  334. USER_DEF    = $FF
  335. M_OFF        = $100
  336. M_ON        = $101
  337. ;
  338. ;
  339. ; MACRO DEFINITIONS
  340. ;
  341. _uni_test    MACRO    symbol
  342. .check\@:
  343.     IFND    \1
  344. \1:
  345. _uni_flag    set    1
  346.     ELSEIF
  347.     IFNE    \1=.check\@
  348. \1:
  349. _uni_flag    set    1
  350.     ELSEIF
  351. _uni_flag    set    0
  352.     ENDC
  353.     ENDC
  354.     ENDM    ;_uni_test
  355. ;
  356. ;
  357. vdi_init_ref    macro
  358.     _uni_test    _vdiref_loc
  359.     IFEQ    0=_uni_flag
  360.     bsr    vdidef_loc
  361.     ENDC
  362.     ENDM    ;vdi_init_ref
  363. ;
  364. vdi_init_def    macro
  365.     _uni_test    _vdidef_loc
  366.     IFEQ    0=_uni_flag
  367.     bra    vdidef_end
  368. vdidef_loc:
  369.     MOVE.L    SP,D0
  370.     LEA    VDI_INITLIMIT,SP
  371.     PEA    PTSOUT
  372.     PEA    INTOUT
  373.     PEA    PTSIN
  374.     PEA    INTIN
  375.     PEA    CONTRL
  376.     PEA    VDIPB
  377.     MOVE.L    D0,SP
  378.     RTS
  379. VDIPTR:    DS.L    1    ;->VDIPB
  380. VDIPB:    DS.L    5    ;->CONTRL,INTIN,PTSIN,INTOUT,PTSOUT
  381. VDI_INITLIMIT:
  382. vdidef_end:
  383.     ENDC
  384.     ENDM    ;vdi_init_def
  385. ;
  386. ;
  387. sub_vdi    macro    symbol
  388.     vdi_init_ref
  389.     move.l    \1,d0
  390.     BSR    sub_vdicode
  391.     _uni_test    _sub_vdi_loc
  392.     IFEQ    0=_uni_flag
  393.     bra.s    sub_vdiend
  394. sub_vdicode:
  395.     move.l    a0,d1
  396.     lea    contrl,a0
  397.     clr.b    (a0)
  398.     move.b    d0,1(a0)
  399.     clr.b    d0
  400.     rol.l    #8,d0
  401.     cmp.b    #$ff,d0
  402.     beq.s    .noptsin
  403.     move    d0,2(a0)
  404. .noptsin:
  405.     clr    d0
  406.     rol.l    #8,d0
  407.     cmp.b    #$ff,d0
  408.     beq.s    .nointin
  409.     move    d0,6(a0)
  410. .nointin:
  411.     clr    d0
  412.     rol.l    #8,d0
  413.     bclr    #7,d0
  414.     bne.s    .nohandle
  415.     move    \2,12(a0)
  416. .nohandle:
  417.     cmp.b    #$7f,d0
  418.     beq.s    .nosubop
  419.     move    d0,10(a0)
  420. .nosubop:
  421.     move.l    d1,a0
  422.     move.l    vdiptr,d1
  423.     move    #$73,d0
  424.     trap    #2
  425.     move.l    intout,d0
  426.     swap    d0
  427.     move.l    ptsout,d1
  428.     rts
  429. sub_vdiend:
  430.     ENDC
  431.     vdi_init_def
  432.     ENDM    ;sub_vdi
  433. ;
  434. ;
  435. aes_init_ref    macro
  436.     _uni_test    _aesref_loc
  437.     IFEQ    0=_uni_flag
  438.     bsr    aesdef_loc
  439.     ENDC
  440.     ENDM    ;aes_init_ref
  441. ;
  442. ;
  443. aes_init_def    macro
  444.     _uni_test    _aesdef_loc
  445.     IFEQ    0=_uni_flag
  446.     bra    aesdef_end
  447. aesdef_loc:
  448.     MOVE.L    SP,D0
  449.     LEA    AES_INITLIMIT,SP
  450.     PEA    ADDROUT
  451.     PEA    ADDRIN
  452.     PEA    INTOUT
  453.     PEA    INTIN
  454.     PEA    GLOBAL
  455.     PEA    CONTRL
  456.     PEA    AESPB
  457.     MOVE.L    D0,SP
  458.     RTS
  459. ;
  460. AESPTR:    DS.L    1    ;->AESPB
  461. AESPB:    DS.L    6    ;->CONTRL,GLOBAL,INTIN,INTOUT,ADDRIN,ADDROUT
  462. AES_INITLIMIT:
  463. ;
  464. GLOBAL:
  465. APVERSION:    DS.W    1
  466. APCOUNT:    DS.W    1
  467. AP_ID:        DS.W    1
  468. APPRIVATE:    DS.L    1
  469. APPTREE:    DS.L    1
  470. AP1RESV:    DS.L    1
  471. AP2RESV:    DS.L    1
  472. AP3RESV:    DS.L    1
  473. AP4RESV:    DS.L    1
  474. ;
  475. ADDRIN:        DS.L    3
  476. ADDROUT:    DS.L    1
  477. ;
  478. aesdef_end:
  479.     ENDC
  480.     ENDM    ;aes_init_def
  481. ;
  482. ;
  483. sub_aes    macro    v1
  484.     aes_init_ref
  485.     move.l    \1,d0
  486.     BSR    sub_aescode
  487.     _uni_test    _sub_aes_loc
  488.     IFEQ    0=_uni_flag
  489.     bra.s    sub_aesend
  490. sub_aescode:
  491.     move.l    a0,d1
  492.     lea    contrl,a0
  493.     lsl.l    #8,d0
  494.     roxl.l    #1,d1
  495.     ror    #8,d0
  496.     move    d0,(a0)+
  497.     clr    d0
  498.     roxr.l    #1,d1
  499.     roxl    #1,d0
  500.     rol.l    #4,d0
  501.     move    d0,(a0)+
  502.     clr    d0
  503.     rol.l    #4,d0
  504.     move    d0,(a0)+
  505.     clr    d0
  506.     rol.l    #4,d0
  507.     move    d0,(a0)+
  508.     clr    d0
  509.     rol.l    #4,d0
  510.     move    d0,(a0)+
  511.     move.l    d1,a0
  512.     move.l    aesptr,d1
  513.     move    #$c8,d0
  514.     trap    #2
  515.     move.l    intout,d0
  516.     swap    d0
  517.     move.l    addrout,d1
  518.     rts
  519. sub_aesend:
  520.     ENDC
  521.     aes_init_def
  522.     ENDM    ;sub_aes
  523. ;
  524. ;
  525. gem_aes    macro    op,v1,v2,v3,v4,v5,v6,v7,v8,v9,va
  526.     aes_init_ref
  527. __AESII    set    (\1)>>20&255
  528. __AESIO    set    (\1)>>16&15
  529. __AESAI    set    (\1)>>12&15
  530. __AESAO    set    (\1)>>08&15
  531. __AESOP    set    (\1)&255
  532.     MOVE.L    A0,D0
  533.     IFNE    0<__AESII
  534.     LEA    INTIN,A0
  535.     MOVE.L    \2,(A0)+
  536.     IFEQ    $19=__AESOP
  537.     IFNE    1<__AESII
  538.     MOVE.L    \3,(A0)+
  539.     IFEQ    $69=__AESOP
  540.     IFNE    2<__AESII
  541.     MOVE.L    \4,(A0)+
  542.     IFNE    3<__AESII
  543.     MOVE.L    \5,(A0)+
  544.     IFNE    4<__AESII
  545.     MOVE.L    \6,(A0)+
  546.     IFNE    5<__AESII
  547.     MOVE.L    \7,(A0)+
  548.     IFNE    6<__AESII
  549.     MOVE.L    \8,(A0)+
  550.     IFNE    7<__AESII
  551.     MOVE.L    \9,(A0)+
  552.     IFNE    8<__AESII
  553.     MOVE.L    \a,(A0)+
  554.     ELSEIF
  555.     GEMADDRIN    \a
  556.     ENDC    ;9II
  557.     ELSEIF
  558.     GEMADDRIN    \9
  559.     ENDC    ;8II
  560.     ELSEIF
  561.     GEMADDRIN    \8
  562.     ENDC    ;7II
  563.     ELSEIF
  564.     GEMADDRIN    \7
  565.     ENDC    ;6II
  566.     ELSEIF
  567.     GEMADDRIN    \6
  568.     ENDC    ;5II
  569.     ELSEIF
  570.     GEMADDRIN    \5,\6
  571.     ENDC    ;4II
  572.     ELSEIF
  573.     GEMADDRIN    \4,\5
  574.     ENDC    ;3II
  575.     ENDC    ;<>wind_set
  576.     ELSEIF
  577.     GEMADDRIN    \3,\4
  578.     ENDC    ;2II
  579.     ENDC    ;<>evnt_multi
  580.     ELSEIF
  581.     GEMADDRIN    \2,\3,\4
  582.     ENDC    ;1II
  583.     LEA    CONTRL,A0
  584.     MOVE    #__AESOP,(A0)+
  585.     MOVE    #__AESII,(A0)+
  586.     MOVE    #__AESIO,(A0)+
  587.     MOVE    #__AESAI,(A0)+
  588.     MOVE    #__AESAO,(A0)+
  589.     MOVE.L    D0,A0
  590.     MOVE.L    AESPTR,D1
  591.     MOVE    #$C8,D0
  592.     TRAP    #2
  593.     aes_init_def
  594.     ENDM    ;gem_aes
  595. ;
  596. GEMADDRIN    MACRO    v1,v2,v3
  597.     IFNE    0<__AESAI
  598.     LEA    ADDRIN,A0
  599.     MOVE.L    \1,(A0)+
  600.     IFNE    1<__AESAI
  601.     MOVE.L    \2,(A0)+
  602.     IFNE    2<__AESAI
  603.     MOVE.L    \3,(A0)+
  604.     ENDC    ;3AI
  605.     ENDC    ;2AI
  606.     ENDC    ;1AI
  607.     ENDM    ;gemaddrin
  608. ;
  609. ;    End of file:    URAn_GEM.S
  610.